import axios from 'axios'

/**
 * 绘制地图接口
 * @param url
 * @param parameter
 * @returns {*}
 */

export function addGisData(parameter) {
  return axios({
    url: '/gis/gisData/add',
    method: 'post',
    data: parameter
  })
}


/**
 * 获取地图数据
 * @param url
 * @param parameter
 * @returns {*}
 */

export function getGisData() {
  return axios({
    url: '/gis/gisData/list',
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * 获取数据字典项列表
 * @param url
 * @param parameter
 * @returns {*}
 */

export function getDictItems(dictCode) {
  return axios({
    url: `/sys/dict/getDictItems/${dictCode}`,
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * 添加图层
 * @param {*} parameter
 * @returns {*}
 */
export function addLayer(parameter) {
  return axios({
    url: '/wla/gis/layer/add',
    method: 'post',
    data: parameter
  })
}

/**
 * 删除图层
 * @param {*} parameter
 */
export function deleteLayer(id) {
  return axios({
    url: '/wla/gis/layer/delete?id=' + id,
    method: 'delete'
  })
}

/**
 * 获取所有图层
 * @returns {*}
 */
export function getLayerList() {
  return axios({
    url: '/wla/gis/layer/list',
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * 获取所有图层分类
 * @returns {*}
 */
export function getLayerListType() {
  return axios({
    url: '/wla/gis/layer/getLayerList',
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * 根据图层id获取要素
 * @param {*} ids [id1, id2, id3, ...]
 * @param {*} type
 * @returns {*}
 */
export function getFeaturesByLayerId(ids, type) {
  return axios({
    url: '/wla/gis/layer/getFeaturesByLayerId?ids=' + ids + (type ? "&type=" + type : ""),
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * 获取要素列表
 */
export function getFeatureList() {
  return axios({
    url: '/wla/gis/feature/getFeatureList',
    method: 'get',
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    }
  })
}


/**
 * 保存新增的点线面要素
 * @param {*} parameter
 * {
    "layerId": "12345678",
    "data": [
       {
        "target": "POLYGON",
        "geom": "[[123.164646,23.4646],[123.164646,23.4646],[123.164646,23.4646],[123.164646,23.4646]]"
        },
       {
        "target": "LineString",
        "geom": "[[123.164646,23.4646],[123.164646,23.4646],[123.164646,23.4646],[123.164646,23.4646]]"
        },
       {
        "target": "Point",
        "geom": "[123.164646,23.4646]"
        },
    ]
  }
 */
export function saveFeature(parameter) {
  return axios({
    url: '/wla/gis/piping/add',
    method: 'post',
    data: parameter
  })
}

/**
 * 删除要素
 * @param {*} parameter {"target":"POINT或LINE或POLYGON","data":{id:"123456"}}
 */
export function deleteFeature(parameter) {
  return axios({
    url: '/wla/gis/piping/delete',
    method: 'delete',
    data: parameter
  })
}

/**
 * 根据id获取点数据
 * @param {*} id
 */
export function getPointById(id) {
  return axios({
    url: '/wla/gis/point/getById?id=' + id,
    method: 'get'
  })
}

/**
 * 新增点信息
 * @param {*} parameter
 */
export function addPoint(parameter) {
  return axios({
    url: '/wla/gis/point/add',
    method: 'post',
    data: parameter
  })
}

/**
 * 修改点信息
 * @param {*} parameter
 */
export function updatePoint(parameter) {
  return axios({
    url: '/wla/gis/point/update',
    method: 'put',
    data: parameter
  })
}

/**
 * 根据id获取线数据
 * @param {*} id
 */
export function getLineById(id) {
  return axios({
    url: '/wla/gis/line/getById?id=' + id,
    method: 'get'
  })
}

/**
 * 新增线信息
 * @param {*} parameter
 */
export function addLine(parameter) {
  return axios({
    url: '/wla/gis/line//add',
    method: 'post',
    data: parameter
  })
}

/**
 * 修改线信息
 * @param {*} parameter
 */
export function updateLine(parameter) {
  return axios({
    url: '/wla/gis/line/update',
    method: 'put',
    data: parameter
  })
}

/**
 * 批量修改线信息
 * @param {*} parameter
 */
export function batchUpdateLine(parameter) {
  return axios({
    url: '/wla/gis/line/batchUpdate',
    method: 'post',
    data: parameter
  })
}

/**
 * 修改面信息
 * @param {*} parameter
 */
export function updatePolygon(parameter) {
  return axios({
    url: '/wla/gis/plane/update',
    method: 'put',
    data: parameter
  })
}

/**
 * 传入id的集合，返回详细的数据的集合
 * @param {*} parameter {layer：图层ID，type:POINT或LINE,ids:ID集合，英文逗号分隔}
 */
export function getPointsOrLinesDetail(parameter) {
  return axios({
    url: '/wla/gis/piping/getPointsOrLinesDetail',
    method: 'post',
    data: parameter
  })
}

/**
 * 管点或管线组合查询
 * 管点或管线组合查询，返回管点或管线记录列表，需要五个参数：layers、type、field、operator、,value，
 * 参数格式及代表意义：{layers：图层ID，多个图层用英文逗号分隔，type:POINT或LINE,field:表字段名称（英文，例如：name），operator:操作符(例如：EQ，代表意义：LIKE：模糊查询，GT：大于，GE：大于或等于，LT：小于，LE：小于或等于，EQ：等于，NE：不等于)，value:要查询的值(例如：张三)}
 * @param {*} parameter
 */
export function findPointsOrLines(parameter) {
  return axios({
    url: '/wla/gis/piping/findPointsOrLines',
    method: 'post',
    data: parameter
  })
}

/**
 * 查询符合条件的管线，统计长度，并生成报表
 * @param {*} parameter
 */
export function getPipelineLength(parameter) {
  return axios({
    url: '/wla/gis/line/getPipelineLength',
    method: 'post',
    data: parameter
  })
}

/**
 * 查询符合条件的设施数量
 * @param {*} parameter
 */
export function getPointFeatureCount(parameter) {
  return axios({
    url: '/wla/gis/point/getPointFeatureCount',
    method: 'post',
    data: parameter
  })
}

/**
 * 管点或管线预警分析
 * @param {*} parameter
 */
export function getPointsOrLinesWarningPeriod(parameter) {
  return axios({
    url: '/wla/gis/piping/getPointsOrLinesWarningPeriod',
    method: 'post',
    data: parameter
  })
}

/**
 * 获取该区域的所有地图面要素
 * @param {*} areaId
 */
export function getPlaneDetailList(areaId) {
  let url = '/wla/gis/piping/getPlaneDetailList'
  if (areaId) {
    url = url + '?areaId=' + areaId
  }
  return axios({
    url: url,
    method: 'get'
  })
}

/**
 * 查询该区域是否已经绑定的地图要素
 * @param {*} areaId
 */
export function getFeatureByBizDataId(areaId) {
  return axios({
    url: '/wla/gis/feature/getFeatureByBizDataId?bizDataId=' + (areaId ? areaId : ''),
    method: 'get'
  })
}
